package main

import (
	"flag"
	"log"
	"logbeat/internal/bootstrap"
	"logbeat/internal/db"
	"logbeat/internal/globalvar"
	"os"
	"os/signal"
	"syscall"

	"gitee.com/lambdang/pkg/yamlconfig"
)

func main() {
	flag.StringVar(&globalvar.ConfigFile, "c", "./config.yaml", "the config file")
	flag.Parse()
	log.Println("启动配置文件", globalvar.ConfigFile)
	yamlconfig.MustLoad(globalvar.ConfigFile, globalvar.SysConf)

	SqlDB := db.CheckDB()
	defer SqlDB.Close()

	//fmt.Println(cfg)
	bootstrap.Start(globalvar.SysConf)

	// 一下逻辑为 监听主进程退出信号去 释放资源， 记录当前每个被监听的文件的当前偏移量
	// 创建一个信号通道
	quit := make(chan os.Signal, 1)

	// 监听SIGINT（Ctrl+C）和SIGTERM信号
	signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)

	// 等待信号到来并完成清理工作
	<-quit
	log.Println("主进程进行清理")
	for k, v := range globalvar.ChMap {
		bootstrap.Clean(k, v)
	}
	// 清理工作完成后，主进程可以退出
	os.Exit(0)

}
